home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 3_0 / DOUBLEDE / CLIPBOAR.C < prev    next >
C/C++ Source or Header  |  1988-07-27  |  2KB  |  107 lines

  1. #include "shell.h"
  2.  
  3. initscrap()
  4. {
  5.     PScrapStuff        our_scrap;
  6.  
  7.     our_scrap = InfoScrap();
  8.     scrap_check = our_scrap->scrapCount;
  9. }
  10.  
  11. getourscrap()
  12. {
  13.     long            scrpSz,offset;
  14.  
  15.     offset = LoadScrap();
  16.     initscrap();
  17.     scrap_contents = NewHandle(0);
  18.     scrpSz = GetScrap(scrap_contents,'PICT',&offset);
  19.     if(scrpSz>0){
  20.         scrap_size = scrpSz;
  21.         scrap_type = (long)'PICT';
  22.     }
  23.     else{
  24.         scrpSz = GetScrap(scrap_contents,'TEXT',&offset);
  25.         if (scrpSz>0){
  26.             scrap_size = scrpSz;
  27.             scrap_type = (long)'TEXT';
  28.         }
  29.     }
  30. }
  31.  
  32. changedscrap()
  33. {
  34.     PScrapStuff        our_scrap;
  35.     GrafPtr            tempPort;
  36.  
  37.     our_scrap = InfoScrap();
  38.     if (our_scrap->scrapCount != scrap_check){
  39.         scrap_check = our_scrap->scrapCount;
  40.         DisposHandle(scrap_contents);
  41.         getourscrap();
  42.         GetPort(&tempPort);
  43.         SetPort(clip_window);
  44.         InvalRect(&clip_window->portRect);
  45.         SetPort(tempPort);
  46.     }
  47. }
  48.  
  49. showclipwindow()
  50. {
  51.     WindowPeek        wRec;
  52.  
  53.     wRec = (WindowPeek)clip_window;
  54.     if (wRec->visible){
  55.         HideWindow(clip_window);
  56.         SetItem(EditMenu,ClipItem,"\pShow Clipboard");
  57.     }
  58.     else{
  59.         ShowWindow(clip_window);
  60.         SelectWindow(clip_window);
  61.         SetItem(EditMenu,ClipItem,"\pHide Clipboard");
  62.     }
  63. }
  64.  
  65. updateclipboard()
  66. {
  67.     BeginUpdate(clip_window);
  68.     EraseRect(&clip_window->portRect);
  69.     DrawGrowIcon(clip_window);
  70.     drawscrap();
  71.     EndUpdate(clip_window);
  72. }
  73.  
  74. drawscrap()
  75. {
  76.     GrafPtr        tempPort;
  77.     Rect        scrap_rect;
  78.     Rect        picRect;
  79.     long        stype;
  80.  
  81.     SetCursor(*(CursHandle)GetCursor(watchCursor));
  82.     GetPort(&tempPort);
  83.     SetPort(clip_window);
  84.  
  85.     scrap_rect = clip_window->portRect;
  86.     scrap_rect.right -= 15;
  87.     scrap_rect.bottom -= 15;
  88.     ClipRect(&scrap_rect);
  89.  
  90.     if (scrap_type == (long)'PICT'){
  91.         picRect = (**(PicHandle)scrap_contents).picFrame;
  92.         OffsetRect(&picRect,-picRect.left+3,-picRect.top+3);
  93.         DrawPicture((PicHandle)scrap_contents,&picRect);
  94.     }
  95.  
  96.     if (scrap_type == (long)'TEXT'){
  97.         InsetRect(&scrap_rect,4,0);
  98.         HLock(scrap_contents);
  99.         TextBox(*scrap_contents,GetHandleSize(scrap_contents),&scrap_rect,teJustLeft);
  100.         HUnlock(scrap_contents);
  101.     }
  102.     SetRect(&scrap_rect,-32000,-32000,32000,32000);
  103.     ClipRect(&scrap_rect);
  104.     SetPort(tempPort);
  105.     InitCursor();
  106. }
  107.